THIRD SEMESTERcoretheorySem 3
PROGRAMMING PARADIGMS
CSS 2180
Syllabus
- 01Imperative Programming: Assignments, side effects, memory models, control structures, branching, procedures, parameter passing (Discussions using C and Go)
- 02Object-Oriented Programming: Concepts of objects, classes, inheritance, specialization of methods, covariance and contravariance, type parametrization, reflective and meta programming (Discussions using Java and Go)
- 03Functional Programming: Pure functions, lists, recursive functions, higher order functions, closures, curry functions, lambdas, evaluation as computation, folds (Discussions using JavaScript, Haskell, ML, or Clojure)
- 04Parallel and Concurrent Programming: Concurrent programming model, parallelism, message passing, thread models, synchronization, deadlocks, live locks, GPU programming principles (Discussions using Scala, Java, C and Go)
- 05Integrated View of Applications of Paradigms: Problem analysis and choosing appropriate paradigm for different components of applications, Interoperability between different programming languages - JVM languages, Foreign Function Interface, and services
References
- B.W. Kernighan and D. Ritchie, "The C Programming Language," PHI, 1988
- A.A. Donovan and B.W. Kernighan, "The Go Programming Language," PHI, 2016
- C. Horstmann, "Core Java, Vol I", 12th Edition, Pearson, 2023
- C. Horstmann, "Core Java, Vol II", 12th Edition, Pearson, 2023
- D. Flanagan, "JavaScript: The Definitive Guide," 7th Edition, O'Reilly 2020
- M. Odersky et.al. "Programming in Scala," 5th Edition, Goel's Computer Hut, 2022
- Class notes and handouts
Credits Structure
4Lecture
0Tutorial
0Practical
4Total